package com.spark.invoicings.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import lombok.Data;

/**
 * 应收/应付明细表
 * 
 * @author sunyan
 * @email sunyan@gmail.com
 * @date 2024-06-13 11:10:42
 */
@Data
@TableName("t_finance_receivable_payable_detail")
public class ReceivablePayableDetail implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 应收/应付明细ID
	 */
	@TableId(type = IdType.AUTO)
	private Integer receivablePayableDetailId;
	/**
	 * 结算类型(1按销售订单结算, 2按采购订单结算, 3按出入库结算)
	 */
	private Integer settlementTypeId;
	/**
	 * 发生日期
	 */
	private Date occurrenceDate;
	/**
	 * 业务类型(1销售发货, 2销售退货, 3采购入库, 4采购退货, 5销售订单, 6采购订单)
	 */
	private Integer businessTypeId;
	/**
	 * 客户ID
	 */
	private Integer customerId;
	/**
	 * 供应商ID
	 */
	private Integer supplierId;
	/**
	 * 商品ID
	 */
	private Integer productId;
	/**
	 * 数量
	 */
	private Integer quantity;
	/**
	 * 单价
	 */
	private double unitPrice;
	/**
	 * 应收金额
	 */
	private double receivableAmount;
	/**
	 * 已收总额
	 */
	private double receivedTotalAmount;
	/**
	 * 待收总额
	 */
	private double pendingCollectionTotalAmount;
	/**
	 * 应付总额
	 */
	private double payableTotalAmount;
	/**
	 * 已付总额
	 */
	private double paidTotalAmount;
	/**
	 * 待付总额
	 */
	private double pendingPaymentTotalAmount;
	/**
	 * 已生成对账单
	 */
	private Integer generatedStatement;
	/**
	 * 出库明细
	 */
	private Integer outboundDetailId;
	/**
	 * 入库明细
	 */
	private Integer inboundDetailId;
	/**
	 * 订单明细
	 */
	private Integer orderDetailId;
	/**
	 * 采购明细
	 */
	private Integer purchaseDetailId;
	/**
	 * 销售订单ID
	 */
	private Integer salesOrderId;
	/**
	 * 采购订单ID
	 */
	private Integer purchaseOrderId;

	/**
	 *商品关联对象
	 * */
	@TableField(exist = false)
	private Product product;

	/**
	 * 客户关联对象
	 * */
	@TableField(exist = false)
	private SaleCustomer saleCustomer;

	/**
	 * 供应商表关联对象
	 * */
	@TableField(exist = false)
	private ProcuredSupplier procuredSupplier;

	/**
	 * 销售订单关联对象
	 * */
	@TableField(exist = false)
	private SalesOrder salesOrder;

	/**
	 * 销售订单明细表关联对象
	 * */
	@TableField(exist = false)
	private OrderDetail orderDetail;

	/**
	 * 采购订单表关联对象
	 * */
	@TableField(exist = false)
	private Order order;

	/**
	 * 采购订单明细表关联对象
	 * */
	@TableField(exist = false)
	private PurchaseDetail purchaseDetail;

	/**
	 * 字典数据表关联对象
	 * */
	@TableField(exist = false)
	private List<DictData> dictData;

	/**
	 * 出库明细表关联对象
	 * */
	@TableField(exist = false)
	private OutboundDetail outboundDetail;

	/**
	 * 入库明细表关联对象
	 * */
	@TableField(exist = false)
	private InboundDetail inboundDetail;

	public Integer getReceivablePayableDetailId() {
		return receivablePayableDetailId;
	}

	public void setReceivablePayableDetailId(Integer receivablePayableDetailId) {
		this.receivablePayableDetailId = receivablePayableDetailId;
	}

	public Integer getSettlementTypeId() {
		return settlementTypeId;
	}

	public void setSettlementTypeId(Integer settlementTypeId) {
		this.settlementTypeId = settlementTypeId;
	}

	public Date getOccurrenceDate() {
		return occurrenceDate;
	}

	public void setOccurrenceDate(Date occurrenceDate) {
		this.occurrenceDate = occurrenceDate;
	}

	public Integer getBusinessTypeId() {
		return businessTypeId;
	}

	public void setBusinessTypeId(Integer businessTypeId) {
		this.businessTypeId = businessTypeId;
	}

	public Integer getCustomerId() {
		return customerId;
	}

	public void setCustomerId(Integer customerId) {
		this.customerId = customerId;
	}

	public Integer getSupplierId() {
		return supplierId;
	}

	public void setSupplierId(Integer supplierId) {
		this.supplierId = supplierId;
	}

	public Integer getProductId() {
		return productId;
	}

	public void setProductId(Integer productId) {
		this.productId = productId;
	}

	public Integer getQuantity() {
		return quantity;
	}

	public void setQuantity(Integer quantity) {
		this.quantity = quantity;
	}

	public double getUnitPrice() {
		return unitPrice;
	}

	public void setUnitPrice(double unitPrice) {
		this.unitPrice = unitPrice;
	}

	public double getReceivableAmount() {
		return receivableAmount;
	}

	public void setReceivableAmount(double receivableAmount) {
		this.receivableAmount = receivableAmount;
	}

	public double getReceivedTotalAmount() {
		return receivedTotalAmount;
	}

	public void setReceivedTotalAmount(double receivedTotalAmount) {
		this.receivedTotalAmount = receivedTotalAmount;
	}

	public double getPendingCollectionTotalAmount() {
		return pendingCollectionTotalAmount;
	}

	public void setPendingCollectionTotalAmount(double pendingCollectionTotalAmount) {
		this.pendingCollectionTotalAmount = pendingCollectionTotalAmount;
	}

	public double getPayableTotalAmount() {
		return payableTotalAmount;
	}

	public void setPayableTotalAmount(double payableTotalAmount) {
		this.payableTotalAmount = payableTotalAmount;
	}

	public double getPaidTotalAmount() {
		return paidTotalAmount;
	}

	public void setPaidTotalAmount(double paidTotalAmount) {
		this.paidTotalAmount = paidTotalAmount;
	}

	public double getPendingPaymentTotalAmount() {
		return pendingPaymentTotalAmount;
	}

	public void setPendingPaymentTotalAmount(double pendingPaymentTotalAmount) {
		this.pendingPaymentTotalAmount = pendingPaymentTotalAmount;
	}

	public Integer getGeneratedStatement() {
		return generatedStatement;
	}

	public void setGeneratedStatement(Integer generatedStatement) {
		this.generatedStatement = generatedStatement;
	}

	public Integer getOutboundDetailId() {
		return outboundDetailId;
	}

	public void setOutboundDetailId(Integer outboundDetailId) {
		this.outboundDetailId = outboundDetailId;
	}

	public Integer getInboundDetailId() {
		return inboundDetailId;
	}

	public void setInboundDetailId(Integer inboundDetailId) {
		this.inboundDetailId = inboundDetailId;
	}

	public Integer getOrderDetailId() {
		return orderDetailId;
	}

	public void setOrderDetailId(Integer orderDetailId) {
		this.orderDetailId = orderDetailId;
	}

	public Integer getPurchaseDetailId() {
		return purchaseDetailId;
	}

	public void setPurchaseDetailId(Integer purchaseDetailId) {
		this.purchaseDetailId = purchaseDetailId;
	}

	public Integer getSalesOrderId() {
		return salesOrderId;
	}

	public void setSalesOrderId(Integer salesOrderId) {
		this.salesOrderId = salesOrderId;
	}

	public Integer getPurchaseOrderId() {
		return purchaseOrderId;
	}

	public void setPurchaseOrderId(Integer purchaseOrderId) {
		this.purchaseOrderId = purchaseOrderId;
	}

	public Product getProduct() {
		return product;
	}

	public void setProduct(Product product) {
		this.product = product;
	}

	public SaleCustomer getSaleCustomer() {
		return saleCustomer;
	}

	public void setSaleCustomer(SaleCustomer saleCustomer) {
		this.saleCustomer = saleCustomer;
	}

	public ProcuredSupplier getProcuredSupplier() {
		return procuredSupplier;
	}

	public void setProcuredSupplier(ProcuredSupplier procuredSupplier) {
		this.procuredSupplier = procuredSupplier;
	}

	public SalesOrder getSalesOrder() {
		return salesOrder;
	}

	public void setSalesOrder(SalesOrder salesOrder) {
		this.salesOrder = salesOrder;
	}

	public OrderDetail getOrderDetail() {
		return orderDetail;
	}

	public void setOrderDetail(OrderDetail orderDetail) {
		this.orderDetail = orderDetail;
	}

	public Order getOrder() {
		return order;
	}

	public void setOrder(Order order) {
		this.order = order;
	}

	public PurchaseDetail getPurchaseDetail() {
		return purchaseDetail;
	}

	public void setPurchaseDetail(PurchaseDetail purchaseDetail) {
		this.purchaseDetail = purchaseDetail;
	}

	public List<DictData> getDictData() {
		return dictData;
	}

	public void setDictData(List<DictData> dictData) {
		this.dictData = dictData;
	}

	public OutboundDetail getOutboundDetail() {
		return outboundDetail;
	}

	public void setOutboundDetail(OutboundDetail outboundDetail) {
		this.outboundDetail = outboundDetail;
	}

	public InboundDetail getInboundDetail() {
		return inboundDetail;
	}

	public void setInboundDetail(InboundDetail inboundDetail) {
		this.inboundDetail = inboundDetail;
	}
}
